Computer systems require reliable storage for large amounts of data. Often, redundant arrays of independent (or inexpensive) disks (RAID) devices are used to provide such storage. In general, RAID devices involve storing data on a plurality of individual hard disk drives. The use of RAID techniques increases the reliability and/or speed of data storage and retrieval.
There are various schemes, or RAID levels, according to which a number of hard disk drives or other storage devices may be used in connection with the storage of data. One such scheme is known as RAID level 1 (or RAID 1).
In a RAID 1 system, the information stored on a first drive is mirrored by a second drive. That is, a duplicate copy of the data stored on the first drive is maintained on a second drive. Accordingly, a RAID 1 system requires a minimum of two independent drives. A RAID 1 system is fault tolerant because, if data is lost from one of the drives, the duplicate copy of that data can most likely be retrieved from the second drive.
With reference now to FIG. 1, a conventional system 100 for implementing a RAID 1 disk array is depicted. In general, the system 100 includes a host processor 104 interconnected to a conventional RAID 1 controller 108 by a system bus 112. The conventional RAID 1 controller 108 is in turn connected to a first device, labeled device 0 116, and to a second device, labeled device 1 120 or 122.
The conventional RAID 1 controller 108 generally includes a local processor 124 a first device controller, labeled controller A 128, and may include a second device controller, labeled controller B 132. The conventional RAID 1 controller 108 also includes a bridge 136 for transmitting and receiving data and commands over the system bus 112.
During a data storage operation, the conventional controller 108 receives data for storage off the system bus 112. The local processor 124 sends that data to the first controller 128, which constructs a block of data, and provides the block of data to the first device 116 for storage. After a successful storage operation, a signal verifying completion of the write operation is passed from the first device 116 to the first device controller 128. The first device controller 128 then signals the completion of the write operation to the local processor 124.
After the local processor 124 has sent the data for storage to the first device controller 128, it sends a second copy of the data for storage to the second device controller 132 for storage on the second device 120. Alternatively, for instance, where a second controller 132 is not provided, the local processor 124 may send the second copy of data to the first controller 128 for storage on the alternate second device 122. It should be noted that even if two devices 116 and 122 are interconnected to a single controller 128, data must still be written to the devices 116 and 122 sequentially. The local processor 124 may obtain the second copy of the data for storage by retrieving the copy from memory interconnected to the system bus 112. Alternatively, the local processor 124 may obtain a second copy by storing a copy in a memory cache associated with the local processor 124 and later moving the copy to the appropriate controller. After the copy of the data for storage has been provided to the second device controller 132 (or the first device controller 128), that data is stored on the second device 120 (or 122) in a procedure that follows substantially the same steps as are involved in storing the first copy of data on the first device 116, as described above.
According to other prior art RAID 1 controllers, no local processor 124 may be provided. In such instances, the host processor 220 generally controls sequentially providing copies of the data for storage on the first and second devices 116 and 120 (or 122).
From the above description, it can be appreciated that conventional RAID 1 controller systems store data in the devices included in the array of disks in serial fashion. That is, only after a copy of the data that will be stored in the first device has been provided to a device controller associated with that first device is a second copy obtained and provided to the device controller associated with the second device. Therefore, with conventional RAID 1 controllers, more time is required to store data than if a single physical drive is used to store data.
Accordingly, it would be advantageous to provide a RAID 1 controller that was capable of storing a primary and a mirror copy of data on a pair of devices substantially simultaneously. Furthermore, it would be advantageous to provide such a RAID 1 controller that did not require sequentially providing a first copy of data for storage on the first device and a second copy of data for storage on the second device, and that required relatively little intervention by a processor. It would also be advantageous to provide such a RAID 1 controller that was reliable in operation, and that was inexpensive to implement.